package com.jiangyg.mall.product.service;

import com.jiangyg.mall.core.support.restful.Pagination;
import com.jiangyg.mall.product.vo.SkuBriefInfoVO;
import com.jiangyg.mall.product.vo.SkuInfoVO;
import com.jiangyg.mall.product.vo.SkuSaleAttrValueVO;

import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;

/**
 * 类描述：sku接口
 *
 * @author jiangyg
 * @date 2021-11-13
 */
public interface SkuService {

    /**
     * 功能描述：SKU信息分页查询
     *
     * @param pagination 分页参数
     * @return 返回分页商品属性
     */
    Pagination<SkuInfoVO> selectPagination(Pagination<SkuInfoVO> pagination) throws Exception;

    /**
     * 功能描述：根据ID获取SKU信息
     *
     * @param skuId SKUID
     * @return 结果
     */
    SkuInfoVO selectById(Long skuId) throws Exception;

    /**
     * 功能描述：根据ID获取商品信息
     *
     * @param skuId SKUID
     * @return 结果
     */
    Map<String, Object> item(Long skuId) throws ExecutionException, InterruptedException;

    /**
     * 功能描述：根据ID获取商品信息
     *
     * @param skuId SKUID
     * @return 结果
     */
    List<SkuSaleAttrValueVO> saleAttrList(Long skuId) throws Exception;

    /**
     * 功能描述：根据ID集合获取商品列表信息
     *
     * @param skuIds skuIds
     * @return 结果
     */
    List<SkuInfoVO> selectListByIds(List<Long> skuIds) throws Exception;

    /**
     * 功能描述：按 skuId 集合查询SKU简要信息
     * <p>只查询重要字段</p>
     *
     * @param skuIds skuId 集合
     * @return 商品价格
     */
    List<SkuBriefInfoVO> selectSkuBriefInfoListByIds(List<Long> skuIds);

}
